package cn.kgc.spring.day03.service.impl;

import cn.kgc.spring.day03.service.TeacherService;

/**
 * @author 课工场
 * @date 2024/11/6
 * @description
 *  为了实现业务代码功能的增强  违背了代码编写的开闭原则
 *    不修改源码实现代码功能增强
 *  1. 提升代码的可扩展性
 *  2. 减少代码的耦合性
 *
 * 代理类:   实现了业务增强的类
 *
 * 被代理类:  需要增强业务功能的类
 *
 *  通过23中设计模式之代理模式实现
 *  1. 静态代理
 *      1.创建一代理类和被代理类实现相同的接口
 *      2.代理对象需要依赖于被代理对象
 *  优势:  可以实现不修改源码  增强业务
 *  不足:
 *     1.代码冗余
 *     2.代码的维护难度提升   实际的编写静态代理类
 *
 *  2. 动态代理  proxy
 *      2.1  基于jdk
 *           1.  基于接口的代理模式
 *      2.2  cglib
 *            基于父子类关系的代理模式   被代理对象A  子类  代理对象 B extends A
 */
public class TeacherServiceImpl implements TeacherService {

    @Override
    public String teachOnLine(String course, String account) {

        System.out.println(course+"课程正在讲解中,会议号:"+account);

        return course+":"+account;
    }

    @Override
    public String teachOffLine(String course, Integer classRoom) {

        System.out.println(course+"课程正在讲解中,在第"+classRoom+"教室");

        return course+":"+classRoom;
    }
}
